import axios from "axios"
import router from "../router"
import el from 'element-ui';
let http = axios.create({
        // baseURL: "/api", //基础地址
        timeout: 1000 * 10, //超时设置
        withCredentials: true //是否携带凭证进行数据交换
    })
    // 拦截的目的就是给每个请求加上相同的请求头
http.interceptors.request.use(config => {
        // config就是拦截所有请求
        // 给需要的请求头加上authorization值是token
        let token = localStorage.getItem("hq-token")
        let pathList = ["/users/login", "/users/getCaptcha"]
        let res = pathList.includes(config.url)
        if (!res) {
            config.headers.authorization = token
        }

        return config
    })
    // 拦截响应
    // token校验失败的原因
    // token时间失效(有效时间过期)
    // token错误
    // token校验失败，就要让页面跳转到登录页
http.interceptors.response.use(config => {
    // 如果数据中code是1004或10022，表示登录过期了或者token验证失败，需要跳转登录页
    if (config.data.code === "1004" || config.data.code === "10022") {
        router.push("/login")
        el.Message.error("登入信息过期，请重新登录")
        localStorage.removeItem("hq-token")
    }
    return config
})

export default http